// function fbnq(index) {
//   if(index === 0 ) return 0
//   if(index === 1 ) return 1

//   return fbnq(index-1) + fbnq(index-2)
// }

// function fbnq(index) {
//   if(index === 0 ) return 0
//   if(index === 1 ) return 1

//   const stack = [0, 1]
//   let i = 2
//   while(i<= index) {
//     stack.push(stack[stack.length-2]+ stack[stack.length-1])
//     i++
//   }
//   return stack
// }
// console.log(fbnq(44))

function fbnq(num) {
  const arr = [0, 1]
  function getA(index) {
    if(index === 0 ) return 0
    if(index === 1 ) return 1
    if(arr[index]) return arr[index]
    const res = getA(index-1) + getA(index-2)
    arr[index] = res
    return res
  }
  return getA(num)
}
console.log(fbnq(44))